home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 265_01 / sectrd.c < prev    next >
Text File  |  1990-02-13  |  1KB  |  56 lines

  1. #include <stdio.h>
  2.  
  3. #define    MAXSECT        720    /* maximum sectors accessible        */
  4. #define    SECTSIZE    512    /* OS sector size            */
  5. #define    EOF_VAL        0xff    /* End of archieve file on disk        */
  6.  
  7. static unsigned char    sectbuf[SECTSIZE];    /* must be in DS!    */
  8.  
  9. main(argc, argv)
  10. char    *argv[];
  11. {
  12. FILE    *fp;
  13. int    i;
  14. int    strtsect;
  15. int    numsect;
  16.  
  17. if(argc != 4)
  18.     {
  19.     fprintf(stderr, "Usage: sectrd filenam start-sector number-sectors\n");
  20.     exit(1);
  21.     }
  22. if((fp = fopen(argv[1], "wb")) == NULL)
  23.     {
  24.     fprintf(stderr, "Can't open %s\n", argv[1]);
  25.     exit(1);
  26.     }
  27. strtsect = atoi(argv[2]);
  28. numsect = atoi(argv[3]);
  29. if(strtsect < 0 || strtsect > MAXSECT)
  30.     {
  31.     fprintf(stderr, "start-sector wrong.\n");
  32.     exit(1);
  33.     }
  34. if(numsect < 0 || (numsect + strtsect) > MAXSECT)
  35.     {
  36.     fprintf(stderr, "start-sector wrong.\n");
  37.     exit(1);
  38.     }
  39. for( ; numsect ; ++strtsect, --numsect)
  40.     {
  41.     if(rdsct(strtsect, sectbuf))
  42.         {
  43.         fprintf(stderr, "error reading source disk!\n");
  44.         exit(2);
  45.         }
  46.     for(i = 0 ; i < SECTSIZE ; ++i)
  47.         if(sectbuf[i] == EOF_VAL)
  48.             {
  49.             printf("EOF detected, Byteoffset %d\n", i);
  50.             break;
  51.             }
  52.         else
  53.             fputc(sectbuf[i], fp);
  54.     }
  55. }
  56.